# -*- coding: utf-8 -*-
from django.db import models
from django.contrib.auth.models import User

STATUS_CHOICES = (
    ('novo', u'Novo'),
    ('anal', u'Análise'),
    ('escl', u'Esclareça'),
    ('reen', u'Re-Enviado'),
    ('emre', u'Em resolução'),
    ('emte', u'Em testes'),
    ('reso', u'Resolvido'),
    ('apro', u'Aprovado'),
    ('desc', u'Descartado'),
    ('naoe', u'Não é bug'),
    ('adia', u'Adiado')
)

PRIORIDADE_CHOICES = '1 2 3 4 5'.split()

SEVERIDADE_CHOICES = (
    ('crit', u'Crítico'),
    ('inev', u'Inevitável'),
    ('evit', u'Evitável'),
    ('cosm', u'Cosmético'),
    ('melh', u'Melhorias')
)

class Bug(models.Model):
    assunto = models.CharField(max_length=128)
    descricao = models.TextField(u'descrição')
    status = models.CharField(max_length=4, choices=STATUS_CHOICES)
    prioridade = models.CharField(max_length=2, choices=PRIORIDADE_CHOICES)
    severidade = models.CharField(max_length=2, choices=SEVERIDADE_CHOICES)
    designado_para = models.ManyToManyField(User)
    solucao = models.TextField(u'solução')
    prazo_estimado = models.DateTimeField()
    prazo_atual = models.DateTimeField()
    
    def __unicode__(self):
        return self.assunto
    
class Passo(models.Model):
    
    class Meta:
        verbose_name = u'passo para reproduzir'
        verbose_name_plural = u'passos para reproduzir'
    
    bug = models.ForeignKey(Bug)
    reportado_por = models.CharField()
    mensagem_erro = models.TextField()
    url = models.URLField()
    navegador = models.CharField(max_length=128)
    passos_para_reproduzir = models.TextField()
    
    def __unicode__(self):
        return "%s (%s)" % (self.bug.assunto, self.reportado_por)
        
class Mensagem(models.Model):
    
    class Meta:
        verbose_name = u'mensagem'
        verbose_name_plural = u'mensagens'
        
    bug = models.ForeignKey(Bug)
    de = models.CharField(max_length=64)
    para = models.CharField(max_length=64)
    mensagem = models.TextField()
    data = models.DateTimeField(auto_now=True, auto_now_add=True)
    
    def __unicode__(self):
        return "%s (De: %s -> Para: %s)" % (self.bug.assunto, self.de, self.para)
        
class Log(models.Model):
    
    bug = models.ForeignKey(Bug)
    status = models.CharField(max_length=4, choices=STATUS_CHOICES)
    data = models.DateTimeField(auto_now=True, auto_now_add=True)
    
    def __unicode__(self):
        return "%s (%s)" % (self.bug.assunto, self.status)
    
    
